package com.netdisk.util;
/**
 * 
 * @author 陈隆
 *
 */
import java.util.List;
import com.netdisk.entity.FileSystem;
import com.netdisk.entity.GroupsUsers;
import com.netdisk.entity.User;


public class PowerManger {
	/**
	 * 
	 * @param user 申请权限的用户
	 * @param files 想要操作的文件
	 * @param opr 想要请求的权限
	 * @param groups 用户属于的组与文件属主输入的组的交集
	 * @return 是否有权限
	 */
	public static boolean hasPower(User user, List<FileSystem> files, int opr,
			List<GroupsUsers> groups) {
		if (user != null && files != null && !files.isEmpty()) {
			for (int i = 0; i < files.size(); i++) {
				FileSystem file = files.get(i);
				if (file.getOwnerId().equals(user.getId())) { // 文件的属主就是当前用户
					int userPower = file.getPower() / 100; // 取得百位
					return (userPower & opr) == opr;// 返回权限
				} else {
					if (groups != null && !groups.isEmpty()) {
						for (int j = 0; j < groups.size(); j++) {
							GroupsUsers gu = groups.get(j);
							if (gu.getUserId().equals(user.getId())) {
								int groupPower = file.getPower() % 100 / 10;
								return (groupPower & opr) == opr;
							}
						}
					}
				}
			}
		}
		return false;
	}
}
